/**
 * 将当前工程复制到扩展安装目录。
 * 在开发VSCode插件时，想要临时修改的代码在普通模式下也能生效，只能先打包，
 * 然后再本地安装，非常麻烦，这个命令就是为了解决这个问题。
 * 有2个要求：
 * 1. 当前已安装的版本和正在开发的版本必须一致；
 * 2. 不会复制node_modules，所以如果依赖包有变化需手动复制到缓存目录；
 */

const vscode = require('vscode');
const fs = require('fs-extra');
const util = require('../util');

module.exports = function(context) {
    context.subscriptions.push(vscode.commands.registerCommand('extension.copyProjectToExtensionFolder', function (uri) {
        util.showInfo('功能有待完善！');
        return;
        const projectPath = util.getProjectPath(uri);
        if (!projectPath) return;
        const json = util.dynamicRequire(`${projectPath}/package.json`);
        // 这里简单通过这几个参数来判断是否是vscode插件
        if (json.activationEvents && json.main && json.contributes && json.publisher) {
            const dest = `${util.getExtensionCachePath()}/${json.publisher}.${json.name}-${json.version}`;
            if (!fs.existsSync(dest)) {
                util.showError(`缓存目录下未找到文件夹：${json.publisher}.${json.name}-${json.version}，请确保当前已安装的插件版本和正在开发的版本一致！`);
                return;
            }
            fs.copy(projectPath, dest, {filter: item => item.indexOf(`${projectPath}/node_modules`) < 0})
            .then(() => util.showInfo(('复制成功，重启生效！')))
            .catch(e => {
                util.showError('复制失败！');
                console.log('复制失败：', e);
            });
        } else {
            util.showError('当前不是一个VSCode插件工程，或者您的package.json写法不标准！');
        }
    }));
};